package net.chanibal.hala.client;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class Imprezy extends Composite
	implements AsyncCallback{

	private Label wczytywanieBazyDancyhLabel;
	private Label label_5;
	private Label miejscLabel;
	private Label salaLabel;
	private Label label_2;
	private Label nastTerminLabel;
	private Grid grid;
	private FlowPanel flowPanel;
	private HorizontalPanel horizontalPanel;
	private ScrollPanel scrollPanel;
	private Label label;
	private VerticalPanel verticalPanel;
	public Imprezy() {

		verticalPanel = new VerticalPanel();
		initWidget(verticalPanel);
		verticalPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
		verticalPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);

		label = new Label("Imprezy i zajęcia");
		verticalPanel.add(label);

		wczytywanieBazyDancyhLabel = new Label("Proszę czekać - Wczytywanie bazy dancyh");
		verticalPanel.add(wczytywanieBazyDancyhLabel);

		scrollPanel = new ScrollPanel();
		verticalPanel.add(scrollPanel);
		scrollPanel.setHeight("400");

		grid = new Grid();
		grid.setStyleName("dane");
		scrollPanel.setWidget(grid);
		grid.resize(10, 4);

		nastTerminLabel = new Label("Następny Termin");
		grid.setWidget(0, 1, nastTerminLabel);

		label_2 = new Label("Terminów");
		grid.setWidget(0, 2, label_2);


		miejscLabel = new Label("Miejsc");
		grid.setWidget(0, 3, miejscLabel);

		label_5 = new Label("Zajęcie");
		grid.setWidget(0, 0, label_5);

		horizontalPanel = new HorizontalPanel();
		verticalPanel.add(horizontalPanel);

		flowPanel = new FlowPanel();
		horizontalPanel.add(flowPanel);
		loadImprezy();
	}

	
	public void loadImprezy()
	{
		wczytywanieBazyDancyhLabel.setStyleName("gwt-Label-Message");
		wczytywanieBazyDancyhLabel.setVisible(true);
		Server.Util.getInstance().getImprezy(this);
	}


	public void pokaz(Integer i )
	{
		new Impreza(i).show();
	}
	
	
	public void onFailure(Throwable caught)
	{
		wczytywanieBazyDancyhLabel.setStyleName("gwt-Label-Error");
		wczytywanieBazyDancyhLabel.setText("Wyjątek:"+caught.toString());
	}


	public void onSuccess(Object result) {
		if(result!=null)
		{
			String[][] tab = (String[][]) result;
			//for(int r=0;r<tab.length;r++){
			grid.resize(tab.length+1,4);
			for(int r=0;r<tab.length;r++){
				Label l = new Label(tab[r][0]);
				l.setStyleName("link");
				final Integer i = Integer.valueOf(tab[r][4]); 
				l.addClickListener(new ClickListener(){
					public void onClick(Widget sender) {
						// TODO Auto-generated method stub
						pokaz(i);
					}
				});
				grid.setWidget(r+1, 0, l);
				for(int c=1;c<4;c++)
					grid.setHTML(r+1,c,tab[r][c]);
			}
		}
		wczytywanieBazyDancyhLabel.setVisible(false);
	}
	
	
	
}
